package driver;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Calendar;

public final class Utilitats {
	public static enum DiesSetmana {DILLUNS,DIMARTS,DIMECRES,DIJOUS,DIVENDRES,DISSAPTE,DIUMENGE};
	public static enum DiesSetmanaABR {D,L,M,C,J,V,S};
	public static enum Mesos {GENER,FEBRER,MARS,ABRIL,MAIG,JUNY,JULIOL,AGOST,SETEMBRE,OCTUBRE,NOVEMBRE,DESEMBRE};
	private static String PATH = System.getProperty("user.dir")+"/fitxers/";
	private static FileReader isr;
	
	public enum TipusFitxers{
		CONFIGURACIO("config.txt"),	
		PETICIONS("peticions.txt"),
		INTERNACIONAL("internacional."),
		LOG("Log.txt"),
		HTML("espacio.html");
		
		private String cadenaFitxer;
				
		TipusFitxers(String cad){
			cadenaFitxer=cad;
		}
		
		public String getNom(){
			return cadenaFitxer;
		}
	};
	
	
	public static BufferedReader obrirFitxer(String tipusFitxers) throws FileNotFoundException{
		
		
		BufferedReader br;
		
		File resourcePath = new File(tipusFitxers); 
		
		isr = new FileReader(resourcePath);
		br = new BufferedReader(isr);
		
		return br;
	}
	public static void tancarFitxer() throws IOException{
		isr.close();
	}
	
	public static BufferedReader obrirFitxer(TipusFitxers tipusFitxers) throws FileNotFoundException{
		if (tipusFitxers==TipusFitxers.INTERNACIONAL){
			Log.llenarLog("Error fitxer internacional sense extensi�");
			throw new FileNotFoundException("Error fitxer internacional sense extensi�"); //TODO personalitzar excepci�
		}else{
			return obrirFitxer(PATH + tipusFitxers.getNom());
		}
	}
	public static BufferedReader obrirFixerInternacional(TipusFitxers tipusFitxers,String extensioIdioma) throws FileNotFoundException{
		return obrirFitxer(PATH + tipusFitxers.getNom()+extensioIdioma);
	}
	public static String PATH(){
		return PATH;
	}
	
	//TODO: Crear excepcions per Dates fora de Rang
	public static Calendar creaCalendar(String token) {
		
		Calendar cal = Calendar.getInstance();
		
		cal.set(
				Integer.parseInt(token.substring(6, 10)), 
				Integer.parseInt(token.substring(3, 5)), 
				Integer.parseInt(token.substring(0, 2)));
		
		return cal;
	}
	
	public static String imprimirData (Calendar data){
		SimpleDateFormat df = new SimpleDateFormat();
		df.applyPattern("dd/MM/yyyy");
		return df.format(data.getTime());
		
	}
}
